/**
 * 从 JWT Token 中提取 Payload 数据
 * @param {string} token - 后端返回的 JWT Token
 * @returns {object} Payload 解析后的对象（含 id、role 等字段）
 */
function parseJwtPayload(token) {
    if (!token) return null;
    try {
        // 1. 分割 Token 为三部分，取中间的 Payload（索引 1）
        const payloadBase64 = token.split('.')[1];
        if (!payloadBase64) throw new Error('Token 格式错误');

        // 2. Base64URL 解码（替换特殊字符，补全 padding）
        const base64 = payloadBase64.replace(/-/g, '+').replace(/_/g, '/');
        // 补全 Base64 缺失的 =（避免解码失败）
        const paddedBase64 = base64.padEnd(base64.length + (4 - base64.length % 4) % 4, '=');
        // 3. 解码为 JSON 字符串，再转为对象
        const payloadJson = decodeURIComponent(
            atob(paddedBase64)
                .split('')
                .map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))
                .join('')
        );
        return JSON.parse(payloadJson);
    } catch (err) {
        console.error('Token 解码失败', err);
        return null;
    }
}

/**
 * 从 Token 中提取 id
 * @returns {number|null} id（后端存储的 Integer 类型）
 */
export function getUserIdFromToken() {
    const token = sessionStorage.getItem('token'); // 从存储中获取 Token
    if (!token) return null;
    const payload = parseJwtPayload(token);
    if (!payload || !payload.id) return null;
    // 后端 id 是 Integer，前端转为数字（避免字符串类型）
    return Number(payload.id);
}